/*
 * @Author: HeAo
 * @Date: 2022-09-14 14:07:01
 * @LastEditTime: 2022-09-15 19:55:46
 * @LastEditors: HeAo
 * @Description: 
 * @FilePath: \第二阶段\ES6\day02\8-对象api拓展.js
 * 别乱动！
 */
// 静态方法 
// 1、is 比较两个数是否相等 (比较值和符号)返回值：true/false
// console.log(Object.is(+1, -1)); //false
// console.log(Object.is(+0, -0)); //false
// console.log(+0 === -0); //true  
// console.log(NaN === NaN); //false
// console.log(Object.is(NaN, NaN)); //true

// 2、assign 
// 深拷贝 指的是被复制的对象里是基本数据类型 实现的是深拷贝
// 半深拷贝 指被复制对象里有引用数据类型 实现的是半深拷贝
// 2.1两个参数——>复制/拷贝 返回第一个参数、  
// let obj = {}
// let obj1 = {
//   name: 'zhangsan',
//   age: 12
// }
// // obj复制obj1
// let res = Object.assign(obj, obj1)
// console.log(res);
// console.log(res === obj); //true 

// 2.2三个参数——>合并对象 返回值第一个参数
// let obj = {}
// let obj1 = {
//   name: 'zhangsan',
//   age: 12
// }
// let obj2 = {
//   gender: 'male'
// }
// let res = Object.assign(obj, obj1, obj2)
// console.log(res); //{ name: 'zhangsan', age: 12, gender: 'male' }
// console.log(res === obj); //true

// 3、获取原型对象的方法
// let obj = {
//   name: 'zhangsan'
// }
// console.log(obj._proto_);
// console.log(obj.constructor.prototype);
// console.log(Object.getPrototypeOf(obj));

// 4、设置原型对象setPrototypeOf
// let obj = {}
// let obj1 = {
//   name: 'lisi'
// }
// // 将obj1设置为obj的原型对象
// Object.setPrototypeOf(obj, obj1);
// console.log(obj._proto_);
// console.log(obj.constructor.prototype);
// console.log(Object.getPrototypeOf(obj));

// 5、
// key 返回键值对的数值
// values 
// entries
let obj = {
  name: 'zhangsan',
  age: 12
}
console.log(Object.keys(obj), '返回键组成的数组');
console.log(Object.values(obj), '返回值组成的数组');
console.log(Object.entries(obj), '返回键值对组成的数组');
// fromEntries 将二维数组转为对象
let res = Object.entries(obj)
console.log(Object.fromEntries(res));